package demo10.iterator.dinermerger;
/**
 * 晚餐菜单
 * */
public class DinerMenu implements Menu{
	static final int MAX_ITEMS = 6;
	int numberOfItems = 0;
	MenuItem[] menuItems;
  
	public DinerMenu() {
		menuItems = new MenuItem[MAX_ITEMS];
		addItem("素食 番茄三明治",
				"('煎') 培根生菜 & 西红柿 用麦皮面包做", true, 2.99);
			addItem("番茄三明治",
				"哈根 和 生菜 & 西红柿 全麦面包", false, 2.99);
			addItem("例汤",
				"一天的汤，配一份土豆沙拉", false, 3.29);
			addItem("热狗",
				"热狗，酸菜，芝士。",false, 3.05);
			addItem("清蒸蔬菜加糙米",
				"糙米蒸蔬菜", true, 3.99);
			addItem("面食",
				"用蕃茄酱意大利面，和一片面包",true, 3.89);
	}
  
	public void addItem(String name, String description, 
	                     boolean vegetarian, double price) 
	{
		MenuItem menuItem = new MenuItem(name, description, vegetarian, price);
		if (numberOfItems >= MAX_ITEMS) {
			System.err.println("对不起，菜单已经满了！无法将项添加到菜单");
		} else {
			menuItems[numberOfItems] = menuItem;
			numberOfItems = numberOfItems + 1;
		}
	}
 
	public MenuItem[] getMenuItems() {
		return menuItems;
	}
  //返回迭代器接口，客户不需要知道餐厅菜单如何维护菜单项的，也不需要迭代器如何实现的。只需要直接使用这个迭代器遍历菜单。
	@Override
	public Iterator createIterator() {
		System.out.println("我什么时候调用+createIterator()");
		return new DinerMenuIterator(menuItems);
		//return new AlternatingDinerMenuIterator(menuItems);
	}
 
	// other menu methods here

}
